import numpy as np
import pandas as pd

# 创建数据
a = pd.Series([12, 22, 45, 23, np.nan, np.nan, 66, 54, np.nan, 99])
df = pd.DataFrame({'value1': [12, 22, 45, 23, np.nan, np.nan, 66, 54, np.nan, 99, 190],
                   'value2': ['a', 'b', 'c', 'd', 'e', np.nan, np.nan, 'f', 'g', np.nan, 'g']})

# isnull()缺失值为true，非缺失值为false
print(a.isnull())

# notnull()缺失值为false，非缺失值为true
print(a.notnull())

# 对于series，使用dropna()后，会删除里面为空的元素
a_drop = a.dropna()

# 对于dataframe使用dropna()后，默认会删除有空值的行
df_drop = df.dropna()

# 下面的例子是取出一列（value1）以后再对该列使用dropna()
df_val1_drop = df['value1'].dropna()

# how='all'代表只有当某行的所有列的值都是空，才会删除该行
drop_all = df.dropna(how='all')

# thresh=2代表某一行中，有效数据少于2个，则删除该行
thresh_less2 = df.dropna(thresh=2)

# subset=['value1'] 代表只考虑value1这一列中缺失值的情况
subset_value2 = df.dropna(subset=['value2'])

# inplace
# 布尔值，默认为False。
# 如果为True，则在原DataFrame上进行操作，返回值为None；
# 如果为False，则会创建一个新的DataFrame，原DataFrame不变。
df.dropna(subset=['value1'], inplace=True)
